package ru.spb.nicetu.altx.mnemo.node.factory;

import java.util.ArrayList;
import java.util.List;

import ru.spb.nicetu.altx.mnemo.cell.INodeCell;
import ru.spb.nicetu.altx.mnemo.node.INode;

/**
 * "Фабрика NODE-ов"
 * 
 * @author serg
 */
public interface INodeFactory {
  /**
   * @return созданный экземпляр NODE-а.
   */
  INode createInstance();

  String getName();

  void setName(String name);

  /**
   * Добавление ячейки в нужную группу. Группа зависит от категории Ячейки.
   * 
   * @param cell
   *          - добавляемая ячейка
   */
  void addNodeCell(INodeCell cell);

  List<INodeCell> getAllInputCells();

  List<INodeCell> getAllOutputCells();

  List<INodeCell> getAllSettingCells();

  /**
   * Работа с категориями
   * @param childName
   */
  void addCategory(String childName);
  void removeCategory(String childName);
  ArrayList<String> getCategories();
}
